// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import ListClass from '@api/base/model/ScheduleTimeListQueryReq'
import BaseClass from '@api/base/model/ScheduleTimeDto'
import UTIL from '../../UTIL'
import API from './API'

const TIP = ['首日', '中午', '次日', '中午']

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: '班时', // 词语

    /**
     * 背景颜色列表
     */
    BG_COLOR_LIST: UTIL.BG_COLOR_LIST,

    /**
     * 标记 (每 4 小时一个)
     */
    MARKS: Array(14).fill().reduce((obj, _, i) => {
      const key = i * 180
      if (i % 4 === 0) obj[key] = { style: { color: 'var(--Warning)', fontWeight: 'bold' }, label: TIP[i / 4] }
      else if (i < 8) obj[key] = `${i * 3}:00`.padStart(5, '0')
      else if (i > 8) obj[key] = `${(i - 8) * 3}:00`.padStart(5, '0')
      return obj
    }, {}),
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 文字颜色字典
     */
    TEXT_COLOR_DICT: UTIL.TEXT_COLOR_DICT,
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, {
    //
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setOne() 重置时使用
   * 4. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    backColor: UTIL.BG_COLOR_LIST[0][0], // 默认背景色
    foreColor: UTIL.BG_COLOR_LIST[0][1], // 默认前景色

    time: [0, UTIL.TOTAL], // 班时，默认全天
    timeBegin: '00:00',
    timeEnd: '00:00',

    relax: [], // 休息时间，默认无 (两数相等则都不保存)
    relaxBegin: '',
    relaxEnd: '',
  }),
}
